package com.miracle;

/**
 * 2021 03 26
 *
 * 删除排序链表中的重复元素 [简单]
 * 存在一个按升序排列的链表，给你这个链表的头节点 head ，请你删除所有重复的元素，使每个元素 只出现一次 。
 * <p>
 * 返回同样按升序排列的结果链表。
 *
 * @author : miracle
 * @version : 1.0.0
 * @date : 2021/3/26 9:12
 */
public class DeleteDuplicates {


    public static void main(String[] args) {

        ListNode head = new ListNode(1);
        head.next = new ListNode(1);
        head.next.next = new ListNode(2);
        head.next.next.next = new ListNode(3);
        head.next.next.next.next = new ListNode(3);


        ListNode listNode = deleteDuplicates(head);
        while (listNode != null) {
            System.out.println(listNode.val);

            listNode = listNode.next;
        }
    }


    public static ListNode deleteDuplicates(ListNode head) {

        if (head == null) {
            return null;
        }
        ListNode ret = new ListNode(0, head);
        ListNode move = ret;
        /* 循环，判断是否等于下一个，如果等于，则将当前next指向next.next*/
        while (move.next != null &&  move.next.next != null) {
            if (move.next.val == move.next.next.val) {
                move.next = move.next.next;
            } else {
                move = move.next;
            }
        }
        return ret.next;
    }


    static class ListNode {
        int val;
        ListNode next;

        ListNode() {
        }

        ListNode(int val) {
            this.val = val;
        }

        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }
}
